<?php
// +----------------------------------------------------------------------
// | 奇乐中介担保交易系统 免费版 2019
// +----------------------------------------------------------------------
// | 官方网址：http://www.qilecms.com   
// +----------------------------------------------------------------------
// | 产品文档：http://www.qilecms.com/doc
// +----------------------------------------------------------------------
// | 开发作者: 奇乐CMS
// +----------------------------------------------------------------------
// | 版权说明：这不是一个自由软件！本产品仅限个人使用，但请务必保留底部版权，以免产生不必要的纠纷,
// | 您只能在不用于商业目的的前提下对程序代码进行修改和使用，
// | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
// +----------------------------------------------------------------------
namespace app\common\controller;
use think\Controller;
use think\facade\Cache;
use think\Validate;
use think\Db;
use think\Url;
use think\facade\Request;
use think\helper\Time;

class Common extends Controller{
 protected $user;
 protected $settings; //全局配置
 protected function initialize(){
         parent::initialize();
         $this->initConfig();  //初始化全局配置
         $this->initTheme();   //初始化模板主题
         $this->initUser();    //初始化会员信息

   } 

//初始化全局配置文件
  protected function initConfig()
  {
       if($this->request->module() == 'admin'){
        //后台模块
          $this->settings = get_settings();
       }else{
        // 前台所有模块
          $this->settings = get_settings(true);
       }

      $this->settings['site']['sitename'];
      $this->assign('settings',$this->settings); 
    

          
  }
/**
* [initTheme 初始化模板主题]
* 
*/
    protected function initTheme()
    {
           if($this->request->module() == 'mobile'){
            // 移动端
                  //不做处理使用默认模块配置下配置信息
               $path = config('template.view_path').'mobile'.'/'.config('template.default_theme').'/'; 
                // 默认模板模块路径
                 \think\facade\View::config('view_path',$path); //thinkphp5.1.14 新增,之前版本动态配置view_path 无效
           }elseif($this->request->module() == 'admin'){
              //不做处理使用默认模块配置下配置信息


           }else{
            //PC端
         
                 if(!cache('template')){
                   $DefaultTheme = model('template')->getDefaultTheme();
                     cache('template',$DefaultTheme);
                 }else{
                     $DefaultTheme =  cache('template');
                 }
                 //获得默认模板         
                 // 默认主题路径
                 config('template.default_theme',$DefaultTheme['dirname']);   //动态设置主题

                 // 动态修改模板路径
                 $path = config('template.view_path').'pc/'.config('template.default_theme').'/'.$this->request->module().'/'; 
                 // 默认模板模块路径
                 \think\facade\View::config('view_path',$path);
         
                //前台跳转自动手机端
   
            
             if($this->settings['site']['website_status'] !=1){
              $content = !empty($this->settings['site']['website_close'])?$this->settings['site']['website_close']:'网站维护中';
                exit($content);
              }


                  //移动端判断
              if($this->request->isMobile() && $this->settings['mobile']['auto_jump'] == 1){

                          header('location:mobile');

               }
           

           }

    }
/**
 * [initUser 初始化User用户信息]
 * @return [type] [description]
 */
   protected function initUser()
   {
          if(session('?uid')){
              $map['uid']    = session('uid');
              $map['status'] = 1; //正常用户
              $user = model('user')->infoData($map); 
       
               if($user['level_id']){
                  $map2['level_id'] = $user['level_id'];
                  $userLevel =  model('userLevel')->infoData($map2);
                  $user['level_name'] = $userLevel['level_name'];            
              }
              $this->user = $user;
           
      
              $this->assign('user',$user);
          }

   }

   protected function checkSubmit($data=[],$rule=[],$msg=[]){
            // $rule = [
            //     'name'  => 'require|max:25',
            //     'age'   => 'number|between:1,120',
            //     'email' => 'email',
            // ];

            // $msg = [
            //     'name.require' => '名称必须',
            //     'name.max'     => '名称最多不能超过25个字符',
            //     'age.number'   => '年龄必须是数字',
            //     'age.between'  => '年龄只能在1-120之间',
            //     'email'        => '邮箱格式错误',
            // ];

            // $data = [
            //     'name'  => 'thinkphp',
            //     'age'   => 10,
            //     'email' => 'thinkphp@qq.com',
            // ];

            $validate   = Validate::make($rule,$msg);
            $result = $validate->check($data);
            if(!$result) {
              return $validate->getError();
            }
    }

//  判断是否需要验证
protected function isValidate(){
    $controller= $this->request->controller();
    
    if($controller  !='Validate'){
     if($this->settings['user']['validate_mobile_status'] == 1){
       //判断是否需要手机验证
       if($this->user['is_mobile'] !=1){
        return $this->error('您尚未完成手机认证，请认证后操作！','@user/validate/index');
       }
     
     }
 
      if($this->settings['user']['validate_email_status'] == 1){
      //判断是否需要邮箱验证
        if($this->user['is_email'] !=1){
          return $this->error('您尚未完成邮箱认证，请认证后操作！','@user/validate/index');
        }

      }
      if($this->settings['user']['validate_realname_status'] == 1){
         //判断是否需要实名验证
         if($this->user['is_realname'] ==0){
          return $this->error('您尚未完成实名认证，请认证后操作！','@user/validate/index');
         }
       
 
     }
 
 
    }
 
  }



     /**
     * 数据库字段 网页字段转换
     * #Date:
     * @param $array 转化数组
     * @return 返回数据数组
     */
    protected function buildParam($array=[])
    {
       
        $data=[];
        if (is_array($array) && !empty($array)){         
            foreach( $array as $item => $value){        
                $data[$item] = $this->request->param($value);
            }
        }
        return $data;
    }  

/**
 * [setCache description]
 * @param [type] $model [数据表对应的模型]
 * @param [type] $field   [字段值]
 */
    public function setCache($model,$field)
    {
        $data = model($model)->listData();
     
        $list = [];
        foreach($data as $k=>$v){
          $list[$v[$field]] = $v;
        } 
        Cache::set(strtolower($model),$list);
        return $list;

    }
/**
 * [getCache description]
 * @param [type] $model [数据表对应的模型]
 * @param [type] $field   [字段值]
 */
    public function getCache($model,$field)
    {
     
        $cache = Cache::get(strtolower($model));
        if(empty($cache)){
            $cache = $this->setCache($model,$field);
            Cache::get($model);
        }
        return $cache;
    }

}